home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib17.dsk
/
TEXTFILE EDITOR.bas
< prev
Wrap
BASIC Source File
|
2023-02-26
|
5KB
|
66 lines
10 REM **********************
20 REM * TEXTFILE EDITOR *
30 REM * BY KEN MANLY *
40 REM * COPYRIGHT (C) 1983 *
50 REM * BY MICROSPARC, INC *
60 REM * LINCOLN, MA. 01773 *
70 REM **********************
80 REM INITIALIZE
90 GOSUB 590:FU = 3:DR = 1: HOME : ONERR GOTO 170
100 GOTO 270
110 REM HIGHLIGHT AND UNHIGHLIGHT MENU SUBROUTINE
120 VT = PEEK(37) +1:HT = PEEK(36) +1: TEXT : VTAB INT((FU +1)/2): HTAB 1 +20 *(FU/2 = INT(FU/2)): PRINT FU" "C$(FU): POKE 34,6: VTAB VT: HTAB HT: RETURN
130 REM MENU CHOICE OR QUIT
140 GOSUB 120: PRINT "WHICH FUNCTION (<ESC> ENDS) ";: & GET NUM,T: ON QT GOTO 660: IF NOT (QT +RT +SP +BS) THEN FU = T
150 PRINT FU +SP -BS: GOTO 270
160 REM ERROR HANDLER
170 CALL SI: ON PEEK(222) GOTO 190,190,190,200,210,220,190,230,240,250,220,190,220,190,190
180 PRINT CHR$(7);: POKE 216,0: GOTO 270
190 PRINT CHR$(7)"DOS ERROR NUMBER " PEEK(222): GOTO 270
200 PRINT CHR$(7)"DISKETTE IS WRITE-PROTECTED": GOTO 270
210 PRINT : PRINT DD$"CLOSE": GOSUB 120:FU = FU +1: GOTO 270
220 PRINT CHR$(7)"NO SUCH TEXTFILE": GOTO 270
230 PRINT CHR$(7)"DRIVE ERROR": GOTO 270
240 PRINT CHR$(7)"DISK FULL": GOTO 270
250 PRINT CHR$(7)"UNLOCK "FF$" FILE? Y" CHR$(8);: & GET ANY,Q$: PRINT Q$: ON (QT +SP +BS) GOTO 270: IF (RT) OR Q$ = "Y" THEN PRINT DD$"UNLOCK"FF$: PRINT FF$" UNLOCKED; <RETURN> TO SAVE"
260 REM CONTROL CENTER: UPDATE FUNCTION USING FLAGS, HIGHLIGHT MENU ITEM, CALL FUNCTION SUBROUTINE
270 GOSUB 120:FU = FU +SP -BS:FU = FU +6 *(FU <1) -6 *(FU >6): INVERSE : GOSUB 120: NORMAL : PRINT "HIT <RETURN> FOR OPTION "FU; CHR$(8);
280 & GET NUM,T: PRINT T *(T >0) +FU *(T = 0);: HTAB 1: ON (SP) OR (BS) GOTO 270: ON (RT) GOTO 290: ON (QT) GOTO 140: GOSUB 120:FU = T -6 *(T >6) +6 *(T <1): GOTO 270
290 CALL EL: ON FU GOSUB 310,360,390,460,490,520: GOTO 270
300 REM READ FILE
310 PRINT "DRIVE? "DR; CHR$(8);: & GET NUM,T: PRINT (T >0) *T +(T = 0) *DR: ON (RT) GOTO 320: ON (QT +SP +BS) GOTO 340: ON (T <0 OR T >2) GOTO 310:DR = T
320 PRINT : PRINT DD$"CATALOG,D"DR
330 PRINT "FILENAME? ";: & INPUT ANY,FF$: ON (QT +RT +SP +BS) GOTO 340: PRINT DD$"OPEN"FF$",D"DR: PRINT DD$"READ"FF$: FOR I = 1 TO 20: & INPUT EXT,A$(I):LL = I: NEXT I: PRINT : PRINT DD$"CLOSE": GOSUB 120:FU = FU +1
340 RETURN
350 REM VIEW TEXT
360 ON ( NOT LL) GOTO 370: FOR I = 1 TO LL: INVERSE : PRINT RIGHT$(" " + STR$(I),2);: NORMAL : PRINT " "A$(I): NEXT
370 PRINT : PRINT : RETURN
380 REM ADD LINE
390 ON LL = 20 GOTO 440: PRINT "AFTER WHICH LINE? "LL CHR$(8);: & INPUT NUM,II: ON (QT +SP +BS) GOTO 430: VTAB PEEK(37): IF RT THEN II = LL
400 II = II +1: CALL EL: PRINT "LINE NUMBER "II: PRINT : & INPUT ANY,TT$: IF (QT +SP +BS) THEN 430
410 IF (II < = LL) THEN FOR I = LL TO II STEP -1:A$(I +1) = A$(I): NEXT
420 A$(II) = TT$:LL = LL +1: PRINT : GOTO 400
430 RETURN
440 FLASH : PRINT "FULL" CHR$(7): NORMAL : FOR I = 1 TO 1000: NEXT : GOSUB 120:SP = 0:BS = 0:FU = 2: RETURN
450 REM DELETE LINE
460 PRINT "WHICH LINE? ";: & INPUT NUM,II: ON (QT +RT +SP +BS) OR (II >LL) OR (LL = 0) GOTO 470: FOR I = II TO LL -1:A$(I) = A$(I +1): NEXT :LL = LL -1: VTAB PEEK(37): CALL EL: PRINT "DONE"
470 RETURN
480 REM EDIT LINE
490 PRINT "WHICH LINE? ";: & INPUT NUM,II: ON (QT +RT +SP +BS) GOTO 500: HOME : VTAB 12: PRINT A$(II): VTAB 20: PRINT "USE NORMAL KEYBOARD EDITING": VTAB 12: & INPUT EXT,A$(II)
500 HOME : RETURN
510 REM WRITE FILE
520 PRINT "DRIVE? ";DR; CHR$(8);: & GET NUM,T: PRINT (T >0) *T +(T = 0) *DR: ON (RT) GOTO 530: ON (QT +SP +BS) GOTO 570: ON (T <0 OR T >2) GOTO 520:DR = T
530 PRINT "FILENAME? "FF$;: HTAB 11: & INPUT ANY,TT$: ON (QT +SP +BS) GOTO 570: IF NOT RT THEN FF$ = TT$
540 PRINT DD$"OPEN"FF$",D"DR: PRINT DD$"DELETE"FF$: PRINT DD$"OPEN"FF$: PRINT DD$"WRITE"FF$
550 FOR I = 1 TO LL: PRINT A$(I): NEXT : PRINT DD$"CLOSE"
560 PRINT "LOCK FILE? N" CHR$(8);: & GET ANY,Q$: PRINT Q$: ON (QT +RT +SP +BS) GOTO 570: IF Q$ = "Y" THEN PRINT DD$"LOCK"FF$
570 RETURN
580 REM ACTIVATE INPUT ROUTINES
590 TEXT : HOME : VTAB 12: PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": FOR R = 1 TO 2000: NEXT : PRINT CHR$(4)"BRUNSIR"
600 REM DEFINE VARIABLES AND MAKE MENU
610 DIM A$(20): & DEF QT,RT,SP,BS:DD$ = CHR$(4):EL = -868:SI = 54915
620 TEXT : HOME : FOR FU = 1 TO 6: READ C$(FU): GOSUB 120: NEXT
630 VTAB 4: PRINT TAB( 6)"<SP>,<BS>-->CHANGE FUNCTION": PRINT TAB( 12)"<ESC>-->QUIT": POKE 34,6: RETURN
640 DATA READ FILE ,VIEW TEXT ,ADD LINE ,DEL LINE ,EDIT LINE ,WRITE FILE
650 REM END
660 TEXT : HOME : PRINT "GOODBYE": END